//备注：拷贝代码请加上作者信息
//作者：王海涛
//邮箱：1126471088@qq.com
//版本：V1.0.0
/********************************************************
    说明：
    1、基于模拟GPIO控制。
    2、使用私有GPIO_BSP驱动。
    3、应用留意tm1640_main.c内的代码。
**********************************************************/
#ifndef __TM1640_DRIVER_H__
#define __TM1640_DRIVER_H__

#include "../../BSP/GPIO_BSP/gpio_bsp.h"
#include "../../Delay/delay.h"


#define TM1640_SCL_GPIO_PORT     PortB
#define TM1640_SCL_GPIO_PIN      Pin8

#define TM1640_SDA_GPIO_PORT     PortB
#define TM1640_SDA_GPIO_PIN      Pin9

typedef enum
{
    Work_Auto_Mode  = 0x00,
    Work_Fixed_Mode = 0x04,
    Work_Test_Mode  = 0x08,
}WHT_TM1640_Work_Mode_enum;

/*数据命令*/
#define TM1640_DATA_CMD_Mode(work_mode)   (0x40 | work_mode)
/*地址命令*/
#define TM1640_ADDR_CMD(display_addr)     (0xC0 | display_addr)
/*亮度共8级*/
#define TM1640_DISPLAY_CMD(brightness)    (brightness == 0 ? 0x80 : (0x88 | (brightness-1)))
/*显示缓存大小*/
#define TM1640_DISPLAY_MAX_SIZE            16


typedef struct
{
    void (*WHT_Init)(void);
    void (*WHT_Set_Brightness)(uint8_t level);//0~8级亮度
    void (*WHT_Display_Buffer)(uint8_t start_addr, const uint8_t* buffer, uint8_t length);
}WHT_TM1640_Driver_t;

extern const WHT_TM1640_Driver_t WHT_TM1640_Driver;

#endif /* __TM1640_DRIVER_H__ */
